package br.com.fiap.beans;

import java.io.Serializable;
import java.util.LinkedList;
import java.util.List;

import javax.enterprise.context.SessionScoped;
import javax.faces.bean.ManagedBean;
import javax.faces.model.SelectItem;
import javax.inject.Inject;
import javax.inject.Named;

import br.com.fiap.beans.filtro.FiltroTrecho;
import br.com.fiap.dao.TrechoDAO;
import br.com.fiap.dao.VooDAO;
import br.com.fiap.entity.Trecho;
import br.com.fiap.entity.Voo;

@Named
@ManagedBean
@SessionScoped
public class FiltroTrechoBean extends AbstractBeanAcessor implements Serializable {

	private static final long serialVersionUID = -7266781475183468719L;

	private FiltroTrecho filtroTrecho = new FiltroTrecho();
	private List<Trecho> trechos;
	
	@Inject
	private TrechoDAO trechoDAO;

	@Inject
	private VooDAO vooDAO;

	public FiltroTrecho getFiltroTrecho() {
		return filtroTrecho;
	}

	public void setFiltroTrecho(FiltroTrecho filtroTrecho) {
		this.filtroTrecho = filtroTrecho;
	}

	public List<Trecho> getTrechos() {
		return trechos;
	}

	public void setTrechos(List<Trecho> trechos) {
		this.trechos = trechos;
	}
	
	public List<SelectItem> getVoos() {
		
		List<Voo> voos = vooDAO.findByNumero(null);
		
		List<SelectItem> itemsVoo = new LinkedList<SelectItem>();
		
		for (Voo voo : voos) {
			itemsVoo.add(new SelectItem(voo.getNumero(), voo.getNumero().toString()));
		}
		
		return itemsVoo;
	}

	public String filtrarTrechos() {

		List<Trecho> trechos = trechoDAO.findByFilter(filtroTrecho);

		this.trechos = trechos;

		return "/trecho/lista-trecho";
	}
	
	public void excluirTrecho(Long id) {
		trechoDAO.delete(id);
		this.filtrarTrechos();
	}

}
